package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 凭证调整单接口
 * 
 * @author wzd
 * @2013-03-13
 */
@Remote
@Local
public interface VoucherAdjustOrderDao {

	/**
	 * 根据条件查询凭证调整单列表--调整单查询
	 * 
	 * @param BranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param tranType
	 *            交易类型
	 * @param startTranTime
	 *            起始时间
	 * @param endTranTime
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证调整单列表
	 */
	public List<VoucherAdjustOrder> getVoucherAdjustOrderList(
			PCPSWebInput webInput, String BranchNo, String status,
			String TranType, String startTranTime, String endTranTime,
			Integer page);

	/**
	 * 根据条件查询凭证调整单列表--调整单查询
	 * 
	 * @param BranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param tranType
	 *            交易类型
	 * @param startTranTime
	 *            起始时间
	 * @param endTranTime
	 *            终止时间
	 * @return 凭证调整单录数
	 */
	public BigInteger getVoucherAdjustOrderListTotal(PCPSWebInput webInput,
			String BranchNo, String status, String TranType,
			String startTranTime, String endTranTime);

	/**
	 * 根据条件查询凭证调整单列表--调整单申请查询
	 * 
	 * @param BranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param tranType
	 *            交易类型
	 * @param startTranTime
	 *            起始时间
	 * @param endTranTime
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证调整单列表
	 */
	public List<VoucherAdjustOrder> getVoucherAdjustOrderByApplyList(
			PCPSWebInput webInput, String BranchNo, String status,
			String TranType, String startTranTime, String endTranTime,
			Integer page);

	/**
	 * 根据条件查询凭证调整单列表--调整单申请查询
	 * 
	 * @param BranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param tranType
	 *            交易类型
	 * @param startTranTime
	 *            起始时间
	 * @param endTranTime
	 *            终止时间
	 * @return 凭证调整单录数
	 */
	public BigInteger getVoucherAdjustOrderByApplyListTotal(
			PCPSWebInput webInput, String BranchNo, String status,
			String TranType, String startTranTime, String endTranTime);

	/**
	 * 根据条件查询凭证调整单列表--调整单取消申请查询
	 * 
	 * @param BranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param tranType
	 *            交易类型
	 * @param startTranTime
	 *            起始时间
	 * @param endTranTime
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证调整单列表
	 */
	public List<VoucherAdjustOrder> getVoucherAdjustOrderByCancelList(
			PCPSWebInput webInput, String BranchNo, String status,
			String TranType, String startTranTime, String endTranTime,
			Integer page);

	/**
	 * 根据条件查询凭证调整单列表--调整单取消申请查询
	 * 
	 * @param BranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param tranType
	 *            交易类型
	 * @param startTranTime
	 *            起始时间
	 * @param endTranTime
	 *            终止时间
	 * @return 凭证调整单录数
	 */
	public BigInteger getVoucherAdjustOrderByCancelListTotal(
			PCPSWebInput webInput, String BranchNo, String status,
			String TranType, String startTranTime, String endTranTime);

	/**
	 * 新增凭证调整单
	 * 
	 * @param VoucherAdjustOrder
	 *            凭证调整单
	 * @throws PCPSApplicationException
	 */
	public void insertVoucherAdjustOrder(VoucherAdjustOrder voucherAdjustOrder)
			throws PCPSApplicationException;

	/**
	 * 修改凭证调整单状态
	 * 
	 * @param VoucherAdjustOrder
	 *            凭证调整单
	 * @throws PCPSApplicationException
	 */
	public void updateVoucherAdjustOrderByStatus(
			VoucherAdjustOrder voucherAdjustOrder)
			throws PCPSApplicationException;

	/**
	 * 根据条件查询凭证库存列表对象
	 * 
	 * @param voucherAdjustOrderId
	 *            调整单ID
	 * @throws PCPSApplicationException
	 */
	public VoucherAdjustOrder getVoucherAdjustOrderById(
			BigInteger voucherAdjustOrderId);
}